From: Roger Pau Monne Date: Wed, 1 Oct 2014 10:42:07 +0000 (+0200) Subject: xl: use nic global default values in network-attach X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4288 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=b6e6ccfaa95109c26c8027e5c5b1c8e97d6ae87f;p=xen.git xl: use nic global default values in network-attach Introduce a new static function that will be used to set the initial nic config based on the global defaults. This fixes a bug caused by network-attach not using the default values set in xl.conf(5). Signed-off-by: Roger Pau Monné Cc: Ian Jackson Cc: Ian Campbell Cc: Wei Liu Acked-by: Ian Campbell --- diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 7912e06411..c734f79e2a 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -506,6 +506,30 @@ static void parse_vif_rate(XLU_Config **config, const char *rate, } } +static void set_default_nic_values(libxl_device_nic *nic) +{ + + if (default_vifscript) { + free(nic->script); + nic->script = strdup(default_vifscript); + } + + if (default_bridge) { + free(nic->bridge); + nic->bridge = strdup(default_bridge); + } + + if (default_gatewaydev) { + free(nic->gatewaydev); + nic->gatewaydev = strdup(default_gatewaydev); + } + + if (default_vifbackend) { + free(nic->backend_domname); + nic->backend_domname = strdup(default_vifbackend); + } +} + static void split_string_into_string_list(const char *str, const char *delim, libxl_string_list *psl) @@ -1354,26 +1378,7 @@ static void parse_config_data(const char *config_source, nic = d_config->nics + d_config->num_nics; libxl_device_nic_init(nic); nic->devid = d_config->num_nics; - - if (default_vifscript) { - free(nic->script); - nic->script = strdup(default_vifscript); - } - - if (default_bridge) { - free(nic->bridge); - nic->bridge = strdup(default_bridge); - } - - if (default_gatewaydev) { - free(nic->gatewaydev); - nic->gatewaydev = strdup(default_gatewaydev); - } - - if (default_vifbackend) { - free(nic->backend_domname); - nic->backend_domname = strdup(default_vifbackend); - } + set_default_nic_values(nic); p = strtok(buf2, ","); if (!p) @@ -6005,6 +6010,8 @@ int main_networkattach(int argc, char **argv) } libxl_device_nic_init(&nic); + set_default_nic_values(&nic); + for (argv += optind+1, argc -= optind+1; argc > 0; ++argv, --argc) { if (MATCH_OPTION("type", *argv, oparg)) { if (!strcmp("vif", oparg)) {